package com.mydemo.spring.state_machine;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang.StringUtils;

import java.util.Arrays;
import java.util.Optional;

/**
 * <p></p >
 *
 * @author liming1
 * @version $Id: BizOrderStatusChangeEventEnum, v1.0 2019-09-25 10:08 liming1 Exp $
 */
@AllArgsConstructor
@Getter
public enum BizOrderStatusChangeEventEnum {

    EVT_CREATE("evt_create"),

    EVT_SIGN("evt_sign"), // 签约

    EVT_LOAN("evt_loan"), // 放款

    EVT_LOAN_FAILED("evt_loan_failed"),

    EVT_REFUND("evt_refund"), // 退款

    EVT_REPAY("evt_repay"), // 还款

    EVT_GEN_BILL("evt_gen_bill"), // 生成账单

    EVT_TOSUCCESS("evt_tosuccess"), // 销账

    EVT_RETRY("evt_retry"), // 重试

    EVT_OVERDUE("evt_overdue"),  // 逾期，用户无动作，由系统定时任务发起

    EVT_LOAN_SUCC("evt_loan_succ"),

    EVT_NEED_NAME_AUTH("evt_need_name_auth");

    String event;

    /**
     * 判断
     * @param eventName
     * @return
     */
    public static BizOrderStatusChangeEventEnum getEvent(String eventName) {
        if (StringUtils.isBlank(eventName)) {
            return null;
        }

        Optional<BizOrderStatusChangeEventEnum> resultOptional = Arrays.asList(BizOrderStatusChangeEventEnum.values()).parallelStream().filter(eventEnum ->
                StringUtils.equals(eventName, eventEnum.getEvent())).findAny();

        if (resultOptional.isPresent()) {
            return resultOptional.get();
        }
        return null;
    }

}
